home *** CD-ROM | disk | FTP | other *** search
- Subject: bug in mintlib44's access() function
- Date: Sun, 19 Jun 94 13:21:50 +0200
- From: Torsten Scherer <itschere@techfak.uni-bielefeld.de>
-
- Hi!
-
- It's probably not ok that the access function from mintlib PL44 uses the
- `real' user id's to determine access rights, and not the `effective' ones.
- If you apply this patch, things look a bit more logical to me... :)
-
- ciao,
- TeSche
- --
- Torsten Scherer (TeSche, Schiller...)
- Faculty of Technology, University of Bielefeld, Germany, Europe, Earth...
- | Use any of "finger itschere@129.70.131.2-15" for adresses and more.|
- | Last updated: 14. April 1994.|
-
-
- --- access.c.origSun Jun 19 13:14:36 1994
- +++ access.cSun Jun 19 13:15:48 1994
- @@ -13,6 +13,7 @@
- const char *path;
- int mode;
- {
- +int euid;
- struct stat sb;
-
- if (stat(path, &sb) < 0)
- @@ -20,19 +21,19 @@
- if (mode == F_OK)
- return 0;/* existence test succeeded */
-
- -if (getuid() == 0) return 0; /* super user can access anything */
- +if ((euid = geteuid()) == 0) return 0; /* super user can access anything */
-
- /* somewhat crufty code -- relies on R_OK, etc. matching the bits in the
- file mode, but what the heck, we can do this
- */
- -if (__mint < 9 || ( getuid() == sb.st_uid ) ) {
- +if (__mint < 9 || ( euid == sb.st_uid ) ) {
- if ( ((sb.st_mode >> 6) & mode) == mode )
- return 0;
- else
- goto accdn;
- }
-
- -if ( getgid() == sb.st_gid ) {
- +if ( getegid() == sb.st_gid ) {
- if ( ((sb.st_mode >> 3) & mode) == mode )
- return 0;
- else
-